package org.lc.stk.dao.baseInfo;

import java.util.List;
import java.util.Optional;

import org.lc.stk.model.baseInfo.Major;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface MajorRepository extends JpaRepository<Major, Integer>, JpaSpecificationExecutor<Major> {
    
    /**
     * 根据ID查询未删除的专业
     */
    Optional<Major> findByIdAndIsDeletedFalse(Integer id);
    
    /**
     * 根据编码查询未删除的专业
     */
    Optional<Major> findByCodeAndIsDeletedFalse(String code);
    
    /**
     * 根据名称查询未删除的专业
     */
    Optional<Major> findByNameAndIsDeletedFalse(String name);
    
    /**
     * 查询所有未删除且已启用的专业
     */
    List<Major> findByIsDeletedFalseAndEnabledTrueOrderByOrderNum();
    
    /**
     * 查询所有未删除的专业
     */
    List<Major> findByIsDeletedFalseOrderByOrderNum();

    /**
     * 批量更新专业启用状态
     */
    @Modifying
    @Query("UPDATE Major m SET m.enabled = :enabled WHERE m.id IN :ids AND m.isDeleted = false")
    int updateEnabledByIds(@Param("ids") List<Integer> ids, @Param("enabled") boolean enabled);
}